import service from "@/utils/request";
import type { IResPage } from "@/api/api";

export interface ISPU {
  // SPU所属分类ID，3级分类ID
  category3Id: number;
  // SPU简介
  description: string;
  //SPU的ID
  id: number;
  //SPU名称
  spuName: string;
  //品牌ID
  tmId: number;
}
//SPU图片
export interface ISPUImage {
  // 图片的id
  id?: number;
  // 图片所属的spu的id
  spuId?: number;
  //图片的名称
  imgName: string;
  //图片的Url
  imgUrl: string;
}

//销售属性的值;
export interface ISPUSaleAttrValue {
  // 销售属性值的id
  id?: number;
  // 当前销售属性值所属的spu的id
  spuId?: number;
  // 是否选中
  isChecked?: boolean;
  //基础销售属性ID
  baseSaleAttrId: number;
  //基础销售属性名称
  saleAttrName: string;
  // 值的内容
  saleAttrValueName: string;
}
/**
 * 销售属性
 * 基础销售属性我们可以通过后端提供的接口来获取，结构类似
 *  baseSaleAttr: [{id:1, name: '颜色'}, {id:2, name: '尺码'}, {id: 3, name: '版本'}]
 */
export interface ISPUSaleAttr {
  // 销售属性的id
  id?: number;
  // 当前销售属性所属的spu的id
  spuId?: number;
  // 基础销售属性的id
  baseSaleAttrId: number;
  // 销售属性的名称
  saleAttrName: string;
  // 销售属性值的列表
  spuSaleAttrValueList: ISPUSaleAttrValue[];
}
export type IAddSPU = Omit<ISPU, "id"> & {
  // SPU 图片列表
  spuImageList: ISPUImage[];
  // SPU 销售属性和值的列表
  spuSaleAttrList: ISPUSaleAttr[];
};

export type IUpdateSPU = ISPU & {
  // SPU 图片列表
  spuImageList: ISPUImage[];
  // SPU 销售属性和值的列表
  spuSaleAttrList: ISPUSaleAttr[];
};

//
//
/**
 * 添加SPU
 * 数据示例IAddSPU
 * {
 *  category3Id: 1,
 *  tmId: 1,
 *  spuName: '小米',
 *  description: '小米牛啊',
 *  spuImageList: [
 *      {
 *          id: 1,
 *          spuId: 1,
 *          imgName: '小米1',
 *          imgUrl: 'http://xxxxxxxx/xxx1.jpg'
 *      },
 *      {
 *          imgName: '小米2',
 *          imgUrl: 'http://xxxxxxxx/xxx2.jpg'
 *      }
 *  ],
 *  spuSaleAttrList: [
 *      {
 *          baseSaleAttrId: 1,
 *          saleAttrName: '颜色',
 *          spuSaleAttrValueList: [
 *              {
 *                  baseSaleAttrId: 1,
 *                  saleAttrName: '颜色',
 *                  saleAttrValueName: '1'
 *              },
 *              {
 *                  baseSaleAttrId: 1,
 *                  saleAttrName: '颜色',
 *                  saleAttrValueName: '2'
 *              }
 *          ]
 *      },
 *      {
 *          baseSaleAttrId: 2,
 *          saleAttrName: '尺码',
 *          spuSaleAttrValueList: [
 *              {
 *                  baseSaleAttrId: 2,
 *                  saleAttrName: '尺码',
 *                  saleAttrValueName: '3'
 *              },
 *              {
 *                  baseSaleAttrId: 2,
 *                  saleAttrName: '尺码',
 *                  saleAttrValueName: '4'
 *              }
 *          ]
 *      }
 *  ]
 * }
 *
 *
 */
//
//获取SPU列表
export function requestSPUs(category3Id: number, page = 1, limit = 5) {
  return service.get<any, IResPage<ISPU>>(`/product/${page}/${limit}`, {
    params: { category3Id },
  });
}

//添加SPU
export function requestSaveSPUInfo(data: IAddSPU) {
  return service.post<any, null>(`/product/saveSpuInfo`, data);
}

//获取指定id的spu下的图片列表
export function requestSPUImageList(id: number) {
  return service.get<any, ISPUImage[]>(`/product/spuImageList/${id}`);
}

// 获取指定id的spu下的销售属性数据
export function requestSPUSaleAttrList(id: number) {
  return service.get<any, ISPUSaleAttr[]>(`/product/spuSaleAttrList/${id}`);
}

/**
 * 编辑 SPU
 * @param data
 * @returns
 */
export function requestUpdateSPUInfo(data: IUpdateSPU) {
  return service.post<any, null>(`/product/updateSpuInfo`, data);
}

//删除 SPU
export function requestDeleteSPU(id: number) {
  return service.delete(`/product/deleteSpu/${id}`);
}
